import * as Cesium from 'cesium';
import gsap from 'gsap';

class LightCone {
  constructor(viewer) {
    this.params = {
      height: 700,
      degree: 0,
    };
    this.modelMatrix = Cesium.Transforms.headingPitchRollToFixedFrame(
      Cesium.Cartesian3.fromDegrees(113.3193, 23.109, this.params.height), // 模型位置 [广州塔位置]
      // 模型旋转情况
      new Cesium.HeadingPitchRoll(this.params.degree, 0, 0) // 不旋转
    );

    // 添加3D模型
    this.model = viewer.scene.primitives.add(
      new Cesium.Model.fromGltf({
        url: './model/bird.glb', // 模型路径
        show: true,
        modelMatrix: this.modelMatrix,
        scale: 1.0, // 模型缩放比例
        minimumPixelSize: 12, // 模型的最小像素大小
        maximumScale: 20000, // 模型的最大缩放比例
        allowPicking: false, // 是否允许鼠标选取
        debugShowBoundingVolume: false, // 是否显示模型的包围盒
        debugWireframe: false, // 是否以线框模式渲染模型
        color: Cesium.Color.YELLOW.withAlpha(0.5),
        colorBlendMode: Cesium.ColorBlendMode.MIX, // 设置颜色的混合模式
      })
    );
    this.animate();
  }
  animate() {
    gsap.to(this.params, {
      height: 800,
      duration: 1,
      degree: Math.PI,
      repeat: -1,
      ease: 'power1.inOut',
      yoyo: true,
      onUpdate: () => {
        this.modelMatrix = Cesium.Transforms.headingPitchRollToFixedFrame(
          Cesium.Cartesian3.fromDegrees(113.3193, 23.109, this.params.height), // 模型位置 [广州塔位置]
          // 模型旋转情况
          new Cesium.HeadingPitchRoll(this.params.degree, 0, 0) // 不旋转
        );
        this.model.modelMatrix = this.modelMatrix;
      },
    });
  }
}
export default LightCone;
